home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 1995-03-07 | 4.6 KB | 138 lines |
- ' Sehr sehr altes angefanges Spiel anno 92...
- ' Hab dann aufgegeben, als AMOS ein paar unbegreifliche Bugs zeigte.
- Screen Open 1,304,8,4,0
- Curs Off : Flash Off : Paper 0 : Cls 0
- For A=0 To 31 : Colour A,0 : Next
- Palette 0,$F00,$F80,$F0
- Screen Display 1,128,41,304,8
- Pen 3 : Print "ENERGY"; : EN=200 : TB=0
- Ink 3 : Bar 58,1 To 57+EN,6
- Screen Open 0,672,200,4,0
- Flash Off : Curs Off : Cls 0 : Hide
- Palette 0,$BBB,$777,$555,$EEE,$A00,$F40,$EE0,0,$77F,$33F,8,$F00,$777,$A00,$CC0
- For A=0 To 15 : Colour A+16,Colour(A) : Next
- Screen Display 0,144,50,304,200
- Palette 0,0,0,0
- Screen Offset 0,18,0
- 'MAKE
- Make Mask
- For A=0 To 313
- Set Line $FFFF
- X=23+A : Ink 3 : Draw X,0 To X,199
- Y1=Peek(Start(9)+MX*2) : Y2=Peek(Start(9)+MX*2+1)
- Set Line Rnd($FFFF)
- Ink 2,1 : Draw X,Y1 To X,0 : Draw X,Y2 To X,199
- Inc MX
- Next
- MY=(Y1+Y2)/2
- Set Rainbow 1,3,242,"","",""
- GC=15 : BC=15
- For A=0 To 241
- Rain(1,A)=GC*$10+BC
- If(A mod 8)=7 and GC>0 Then Dec GC : Rain(1,A-1)=GC*$10+BC
- If(A mod 16)=15 and GC=0 and BC>0 Then Dec BC : Rain(1,A-1)=GC*$10+BC
- Next
- Rainbow 1,0,49,0
- X=0 : OP=0 : OX=0 : MX=0
- A$="L A=202; A: L X=RD/300-10; P; J A;"
- Channel 9 To Rainbow 1
- Amal 9,A$
- A$="L R0=14400; L R1=9800; L R2=0; L R3=0; L R4=5; L R5=0; L R6=3; "
- A$=A$+"A: P; L RC=R0; L RD=R1; L A=R5/2+R6; L R5=R5+1; L R3=R3+1; L R0=R0+R2; "
- A$=A$+" L R1=R1+R3; L X=R0/50; L Y=R1/50; "
- A$=A$+" If J1&4 Jump Left; "
- A$=A$+" If J1&8 Jump Right; "
- A$=A$+" L R6=3; "
- A$=A$+"B: If J1&1 Jump Up; "
- A$=A$+" If J1&2 Jump Down; "
- A$=A$+"C: If R0<7200 Jump V;"
- A$=A$+" If R0>20800 Jump Y; "
- A$=A$+"E: If R1<2550 Jump X; "
- A$=A$+"F: If R5<3 Jump A; Let R5=0; Jump A;"
- A$=A$+"V: Let R0=7200; L X=R0/50; Let R2=0-R2; Jump E; "
- A$=A$+"Y: Let R0=20800; L X=R0/50; Let R2=0-R2; Jump E; "
- A$=A$+"X: Let R1=2550; L Y=R1/50; Let R3=0-R3; Jump F; "
- A$=A$+"L: L R6=2 ; If R2<-200 Jump B; Let R2=R2-R4; Jump B; "
- A$=A$+"R: L R6=4 ; If R2>200 Jump B; Let R2=R2+R4; Jump B; "
- A$=A$+"U: Let R3=R3-R4-1; Jump C; "
- A$=A$+"D: Let R3=R3+R4; Jump C; "
- B$="A: Let X=X+4; P; If X<464 Jump A; "
- UBOOT$="Let R0=22400; Let R1=-50; L Y=R2+50; L RB=Y; "
- UBOOT$=UBOOT$+"A: Let R1=R1-1; Let R0=R0+R1; Let X=R0/50; L RA=X; P; I X>112 J A; "
- ROCKET$="Let R0=RA*50; Let R1=-200; L R2=RB+2*50; A 0,(9,1)(10,1); "
- ROCKET$=ROCKET$+"A: Let R1=R1-3; Let R0=R0+R1; Let X=R0/50; L Y=R2/50;"
- ROCKET$=ROCKET$+"L R3=RD-R2/25; L R2=R2+R3; P; I X>112 J A; "
- Sprite 0,0,0,1
- Sprite 2,0,0,11
- Sprite 4,0,0,7
- Sprite 5,0,0,7
- Sprite 6,0,0,9
- Sprite 7,0,0,10
- Channel 0 To Sprite 0
- Channel 1 To Sprite 2
- Channel 7 To Sprite 5
- Channel 4 To Sprite 6
- Channel 5 To Sprite 7
- Channel 6 To Sprite 4
- Palette 0,$20,$40,$60
- Amal 0,A$
- Amal On 0
- Amal On 9
- Rem 20654321654321
- Doke $DFF098,%11000011000001
- Repeat
- A=Peek($DFF00F) and 6
- Until A=0
- ES=0 : TIM=0
- Repeat
- Wait Vbl : Gosub SCROL : EX=0 : TT=0 : Add TIM,1,0 To 9
- A=Peek($DFF00F) and 6 : If A Then Gosub CRASH
- If Sprite Col(0,5 To 5) Then TB=3 : Gosub CRASH : Amal Off 7 : Sprite 5,0,0, : EX=1
- If Sprite Col(0,6 To 6) Then TB=4 : Gosub CRASH : Amal Off 4 : Sprite 6,0,0, : EX=1
- If Sprite Col(0,7 To 7) Then TB=4 : Gosub CRASH : Amal Off 5 : Sprite 7,0,0, : EX=1
- If EN=0 and Chanan(1)=0 Then EX=1
- If Sprite Col(4,5 To 5) Then EX=0 : Sprite 2,X Sprite(5)-3,Y Sprite(5)+2, : Amal Off 3 : Sprite 5,0,0, : Gosub EX
- If EX=1 Then Sprite 2,X Sprite(0)+Rnd(10),Y Sprite(0)+Rnd(4), : Gosub EX
- If Fire(1) and Chanmv(6)=0 Then Sprite 4,X Sprite(0),Y Sprite(0)+4,6 : Amal 6,B$ : Amal On 6
- If Rnd(50)=1 and Chanmv(7)=0 Then Amal 7,UBOOT$ : Amal On 7 : Amreg(7,2)=MY
- If Rnd(20)=2 and Chanmv(7) and Chanmv(4+RO)=0 Then Amal 4+RO,ROCKET$ : Amal On 4+RO : RO=1-RO
- If TT=0 Then TB=1 Else TB=TB-(TIM=0)
- Until Y Sprite(0)>250
- End
- CRASH:
- If Chanan(1+ES)=0 Then EX=1
- EN=Max(0,EN-TB)
- Screen 1
- If EN>1 Then Ink(EN-2)/66+1 : Bar 58,1 To 57+EN,6
- Ink 0 : Bar 58+EN,0 To 59+EN+TB,8 : Screen 0
- Amreg(0,4)=(EN+19)/30
- TT=1
- Return
- EX:
- Amal 1,"A 1,(11,2)(12,2)(13,2)(14,3)(15,3)(16,3)(17,2)(18,1)(19,1); " : Amal On 1
- Return
- SCROL:
- Inc OP : If OP>15 Then Add OP,-16 : Add OX,16 : If OX>319 Then Add OX,-320
- Set Line $FFFF
- X=335+OX+OP : Ink 3 : Draw X,0 To X,199
- Y1=Peek(Start(9)+MX*2) : Y2=Peek(Start(9)+MX*2+1)
- Set Line Rnd($FFFF)
- Ink 2,1 : Draw X,Y1 To X,0 : Draw X,Y2 To X,199
- MY=(Y1+Y2)/2
- Add MX,1,0 To 4999
- Screen Offset 0,18+OX+OP,0
- Screen Copy 0,X,0,X+1,200 To 0,X-320,0
- Return
- Procedure MAKE
- Erase 9 : Reserve As Data 9,10000
- Y1=10 : Y2=189
- For A=0 To 4999
- Poke Start(9)+A*2,Y1
- Poke Start(9)+A*2+1,Y2
- UY1=Rnd(4)-2
- UY2=Rnd(4)-2
- If(Y2-UY2)-(Y1+UY1)<30 Then UY1=-2 : UY2=-2
- Y1=Max(Min(Y1+UY1,180),10)
- Y2=Max(Min(Y2-UY2,189),20)
- Next
- End Proc